0.96吋 OLED 12864 汉字 显示 优化 |
您所在的位置:网站首页 › arduino oled 汉字 › 0.96吋 OLED 12864 汉字 显示 优化 |
辅助舍友做毕业设计中的显示部分,优化了OLED的汉字显示,简化了函数的调用方式,略有小得,留做记录。程序在最后面。 未经授权,不得转载!_(:з)∠)_ 前言中景园的给的例程中的汉字显示函数调用方式是这样的: OLED_ShowCHinese(0,0,0);//中 OLED_ShowCHinese(18,0,1);//景 OLED_ShowCHinese(36,0,2);//园 OLED_ShowCHinese(54,0,3);//电 OLED_ShowCHinese(72,0,4);//子 OLED_ShowCHinese(90,0,5);//科 OLED_ShowCHinese(108,0,6);//技
为了方便查找汉字,我们也将使用到汉字的区位码。 在制作字库之前,先定义一个结构体类型: typedef struct { char name[3]; char dat[32]; }chinese;结构体的第一个成员name[3] 用来存放汉字的区码和位码以及一个字符串结束符 ‘\0’ ,这里的 ‘\0’ 并不是必要的。 结构体的第二个成员dat[32] 用来存放汉字点阵数据,这里采用的是16*16的汉字,16*16/8=32,故单个汉字的点阵数据为32字节。 拥有了此结构体类型后,我们就可以开始制作字库了QwQ 首先声明一个结构体数组,长度不用填写 chinese Hzk[]={};然后用 PCtoLCD2002.exe 软件取字模, 软件设置如下 顺序是无所谓的。 二、汉字显示函数 /******************************************************************************** * @函数名: OLED_ShowCHineseWord * @函数描述: 在指定位置显示占宽16*16的单个 汉字 * @函数作者: 矛盾聚合体 * @输入参数: 参数名 参数类型 参数描述 @x: u8 列坐标,0~127 @y: u8 行坐标,0~7 @str: u8* 要显示的汉字 @flag: u8 反白标志,非0时反白显示 * @返回值: void * @其他: ********************************************************************************/ void OLED_ShowCHineseWord(u8 x,u8 y,u8* str,u8 flag) { u8 t=0; u16 index; for(index=0; index=120){y++;y++;x=0;}//修改地址 } } } }汉字和ASCII码的最大的区别就是,汉字的区码和位码最高为都是1,而ASCII码最高位为0,依据此,将汉字和ASCII字符区分开来。 为了实现自动换行,这里做了一点小处理,每次写字符后,光标位置移动,并根据下一个字符的类型判断是否换行: if(*str&0x80) { if(x>=112){y++;y++;x=0;}//修改地址 } else { if(x>=120){y++;y++;x=0;}//修改地址 }有读者可能就要问了,要是下一个字符是结束符怎么办?你没做处理鸭? 笑话!再到 while可就跳出去了,不会执行到写字符的程序的 ↓ - ←(看见了吗?滑稽) ↑ https://pan.baidu.com/s/1COY6auWgYaIXgAtSb9KsuQ 1ots |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |